package nav;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import conexion.ProxyIR;

import VO.ItemSolicitudVO;
import VO.RodamientoVO;
import VO.SolicitudRodamientosVO;

/**
 * Servlet implementation class SolicRodAgregarRodamiento
 */
public class SolicRodAgregarRodamiento extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SolicRodAgregarRodamiento() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession s = request.getSession();
		SolicitudRodamientosVO srvo = (SolicitudRodamientosVO) s.getAttribute("sr_srvo");
		if(srvo==null)
		{
			PagesNav.errorMsgSet(s, "Error intentando agregar un item a una solicitud no existente");
			response.sendRedirect(PagesNav.GENERARSOLICITUD);
			return;
		}
		
		Integer rodid=0;
		Integer cantidad;
		try{
			rodid=new Integer((String)request.getParameter("rod_id"));
			cantidad =new Integer((String) request.getParameter("cantidad"));
		}
		catch (NumberFormatException e) {
			cantidad=0;
		}
		
		if(rodid==null || rodid<=0)
		{
			PagesNav.errorMsgSet(s, "El codigo no puede ser vacio");
			response.sendRedirect(PagesNav.GENERARSOLICITUD);
			return;
		}
		if(cantidad <=0 )
		{
			PagesNav.errorMsgSet(s, "La cantidad ingresada es incorrecta");
			response.sendRedirect(PagesNav.GENERARSOLICITUD);
			return;
		}
		
		ArrayList<ItemSolicitudVO> items = srvo.getItemsSolicitudes();
		Iterator<ItemSolicitudVO> it=items.iterator();
		Boolean encontrado=false;
		while(it.hasNext() && !encontrado)
		{
			ItemSolicitudVO item=it.next();
			if(item.getRodamiento().getId() == rodid)
			{
				item.setCantidad(item.getCantidad()+cantidad);
				encontrado=true;
			}
		}
		if(!encontrado)
		{
			ArrayList<RodamientoVO> rods= (ArrayList<RodamientoVO>) s.getAttribute("sr_rodamientos");
			Iterator<RodamientoVO> itr=rods.iterator();
			RodamientoVO r=null;
			while(itr.hasNext() && !encontrado)
			{
				r=itr.next();
				if(r.getId() == rodid)
					encontrado=true;
			}
			if(encontrado)
			{
				ItemSolicitudVO isvo=new ItemSolicitudVO();
				isvo.setRodamiento(r);
				isvo.setCantidad(cantidad);
				srvo.getItemsSolicitudes().add(isvo);
			}
		}
		s.setAttribute("sr_srvo", srvo);
		response.sendRedirect(PagesNav.GENERARSOLICITUD);
	}

}
